package com.ruoyi.worker.mapper;

import com.ruoyi.worker.domain.OperationalRequirementsTable;
import com.ruoyi.worker.domain.SchemeConfiguration;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @ClassName SchemeConfigurationMapper
 * @Description 方案配置mapper
 * @Author leizhang
 * Date 2021/10/12 5:53 下午
 * @Version 1.0
 **/
@Mapper
public interface SchemeConfigurationMapper {
    /**
     * @param requestParam
     * @return void
     * @Description : 保存方案配置信息(主表信息保存)
     * @Author : leizhang
     * @Date 5:56 下午 2021/10/12
     **/
    void addSchemeConfiguration(Map<String, Object> requestParam);

    /**
     * @param requestParam
     * @return void
     * @Description : 批量新增人员配置w信息
     * @Author : leizhang
     * @Date 10:20 下午 2021/10/12
     **/
    void addStaffingTab(List<Map<String, Object>> requestParam);

    /**
     * @param requestParam
     * @return void
     * @Description : 保存设备配置信息
     * @Author : leizhang
     * @Date 10:34 下午 2021/10/12
     **/
    void addEquipmentConfigTab(@Param("id") int id, @Param("beginTime") int beginTime, @Param("endTime") int endTime, @Param("list") List<Map<String, Object>> requestParam);

    /**
     * @param
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @Description : 配置方案主表信息获取
     * @Author : leizhang
     * @Date 10:27 上午 2021/10/13
     **/
    List<Map<String, Object>> getSchemeConfigurationTable(SchemeConfiguration schemeConfiguration);

    /**
     * 状态更新
     *
     * @param requestBody
     */
    void updateSchemeConfiguration(Map<String, Object> requestBody);

    /**
     * @param id
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @Description :获取方案配置详情byId(主表信息)
     * @Author : leizhang
     * @Date 9:46 下午 2021/10/13
     **/
    SchemeConfiguration getSchemeConfigurationDetail(int id);

    /**
     * @param id
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @Description : 获取方案配置人员配置详情
     * @Author : leizhang
     * @Date 10:27 下午 2021/10/13
     **/
    List<Map<String, Object>> getStaffingsById(int id);

    /**
     * @Description :方案配置信息删除
     * @Author : leizhang
     * @Date 1:39 下午 2021/10/18
     * @param ids
     * @return void
     **/
    void delSchemeConfigurationInfo(List<Integer> ids);

    /**
     * @param id
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @Description :获取方案配置设备详情
     * @Author : leizhang
     * @Date 10:29 下午 2021/10/13
     **/
    List<Map<String, Object>> getEquipmentsById(int id);

    /**
     * @param
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @Description :方案配置信息获取
     * @Author : leizhang
     * @Date 10:47 上午 2021/10/14
     **/
    List<Map<String, Object>> getSchemeConfiguration(Map<String, Object> requestParam);

    /**
     * @param requestParam
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @Description :班次信息获取
     * @Author : leizhang
     * @Date 1:40 下午 2021/10/14
     **/
    List<Map<String, Object>> getTimShiftInfo(Map<String, Object> requestParam);

    /**
     * @param requestParam
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @Description : 获取班组信息
     * @Author : leizhang
     * @Date 1:46 下午 2021/10/14
     **/
    List<Map<String, Object>> getDepInfo(Map<String, Object> requestParam);

    /**
     * @param requestParam
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @Description : 策略信息获取
     * @Author : leizhang
     * @Date 3:17 下午 2021/10/14
     **/
    List<Map<String, Object>> getStrategyInfo(Map<String, Object> requestParam);

    /**
     * @param requestParam
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @Description : 获取预估业务量
     * @Author : leizhang
     * @Date 4:21 下午 2021/10/14
     **/
    List<Map<String, Object>> getQualityPredict(Map<String, Object> requestParam);

    /**
     * 超限配置方案信息获取
     *
     * @return
     */
    List<Map<String, Object>> getBusinessVolume();

    /**
     * @param requestParam
     * @return void
     * @Description :新增配置方案主表
     * @Author : leizhang
     * @Date 3:04 下午 2021/10/15
     **/
    void addOperationalInfo(Map<String, Object> requestParam);

    /**
     * @param userId
     * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     * @Description : 获取用户岗位信息
     * @Author : leizhang
     * @Date 3:51 下午 2021/10/15
     **/
    List<Map<String, Object>> getUserPosts(Long userId);

    /**
     * @param requestParam
     * @param operationalId
     * @return void
     * @Description : 运营需求单详情新增
     * @Author : leizhang
     * @Date 4:37 下午 2021/10/15
     **/
    void addOperationalRequirementsDetails(@Param("list") List<Map<String, Object>> requestParam, @Param("operationalId") int operationalId);

    /**
     * @Description : 方案人员配置信息删除
     * @Author : leizhang
     * @Date 1:46 下午 2021/10/18
     * @param ids
     * @return void
     **/
    void delStaffingInfo(List<Integer> ids);

    /**
     * @Description :设备信息删除
     * @Author : leizhang
     * @Date 1:50 下午 2021/10/18
     * @param ids
     * @return void
     **/
    void delEquimentInfo(List<Integer> ids);
    /**
     *
     * 功能描述:根据名称获取方案是否存在
     * @Date 2021/11/17 16:16
     * @param
     * @param requestParam
     * @return int
     * @author 刘松山
     */
    int  getSchemeConfigurationCount(Map<String, Object> requestParam);
    /**
     *
     * 功能描述:根据业务量获取方案是否存在
     * @Date 2021/11/17 16:54
     * @param
     * @param requestParam
     * @return int
     * @author 刘松山
     */
    int countSchemeConfigurationBybusiness(Map<String, Object> requestParam);

    List<Map<String, Object>> getSchemeConfigurationOfOperational(OperationalRequirementsTable operationalRequirementsTable);
}
